こんにちは、技術1課の山中です。
4月にひっそりと入社して、ひっそりと暮らしてきました。
サーバーワークスは基本的に社内のコミュニケーションは全て Slack で行っていて、部活チャンネルやプロジェクトチャンネルなど多くのチャンネルがあります。
そんな私が気になったのは、「どれくらいのペースでチャンネルって増えているんだろう」と気になったので、ひたすら今日までデータを集めてみました。
チャンネルの取得
チャンネルの取得は Lambda で行います。
Lambda を 5 分おきにひたすら動かして Slack のチャンネル数を取得しています。(そんなに頻繁に動かす意味はないかもしれません。
取得した結果は、 CloudWatch に channelsCount
というメトリクス名で追加します。
トークンの取得
Legacy tokensにアクセスし Token
を発行します。
デプロイ準備
今回デプロイには Serverless Framework を使用しました。
serverless.yml
service: slack-python provider: name: aws runtime: python3.6 stage: dev region: ap-northeast-1 iamRoleStatements: - Effect: "Allow" Action: - "cloudwatch:PutMetricData" Resource: "*" channel-count: handler: channel-count.main events: - schedule: "rate(5 minutes)" timeout: 300
channel-count.py
import os import sys sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)), 'vendor')) import boto3 import datetime import requests import yaml # CloudWatch クライアントの生成 cloudwatch = boto3.client('cloudwatch') def main(event=None, context=None): url = 'https://slack.com/api/channels.list' params = { 'token': 'xoxp-xxxxx-xxxxx-xxxxx-xxxxx', 'exclude_archived': 'true' } try: response = requests.post(url, params) cloudwatch.put_metric_data( Namespace='Slack', MetricData=[ { 'MetricName': 'channelsCount', 'Timestamp': datetime.datetime.utcnow(), 'Value': len(response.json()['channels']), 'Unit': "Count" } ] ) except Exception as e: print('aborted: ' + e.message)
デプロイ
$ serverless deploy
結果
7/14 から動かし続けた結果はこのようになりました!
約 2 ヶ月でチャンネル数は 995 から 1102 まで増えました。
※途中チャンネル数が減少しているのは、アーカイブされているチャンネルがあるからです。
想像していたより、増えていなかったので引き続きカウントを続けていこうと思います。