LoginSignup
1

Slack + Lambda + NewRelicでコーヒー摂取量を記録・可視化できるコマンドを作ってみた

Last updated at Posted at 2022-12-01

新卒エンジニアによる全部俺カレンダー2022 1日目投稿記事です。

概要

作業に集中する時やリラックスする時によく飲むコーヒー・・。
頭が冴えてスッキリするのですが、ついつい飲み過ぎてカフェイン依存症にならないか健康面的に心配になってきました。

そこで自分がどのくらいコーヒーを飲んだか可視化してみようと思い、Slackコマンドを作成してみました。

使用技術

Slack API
AWS Lambda + API Gateway
NewRelic

用意するもの

  • Slackのアカウント / ワークスペース
  • AWSアカウント
  • NewRelicのアカウント(無料版でOK)

Slack APIでの設定

Command: 好きなコマンド名(英字)

Request URL: API Gatewayのエンドポイントを設定

スクリーンショット 2022-11-23 11.01.54.png

今回は/newrelicという名前でコマンドを作成していきます。

Lambda関数の作成

今回ランタイムはPython3.9を使用。

設定 > 環境変数で NewRelicのAPI KeyとEvent APIのエンドポイントURLをあらかじめ設定しておく。
スクリーンショット 2022-12-01 9.34.36.png

import json
import os
from urllib.parse import parse_qs
import requests
import boto3

NEWRELIC_KEY = os.environ["NEWRELIC_KEY"]
NEWRELIC_ENDPOINT = os.environ["NEWRELIC_ENDPOINT"]

def lambda_handler(event, context):

    headers = {"X-Insert-Key": NEWRELIC_KEY}
    d = {}
    # NRQLで指定するイベント名
    d["eventType"] = "health"
    # NRQLで取得する属性名
    d["count_coffee"] = 1

    # NewRelicにイベントを送信
    res = requests.post(NEWRELIC_ENDPOINT, headers=headers, json=d)
    
    # コマンド実行時に返すメッセージ
    message = '記録完了! \n コーヒーの飲み過ぎはほどほどに。'

    return {
        "response_type": "ephemeral",
        "text": message
    }

API Gatewayの設定

Lambda関数のトリガーとしてAPI Gatewayを作成する。

(※ API Gatewayの概要・基本的な使い方は割愛します)

APIの作成から REST API を選択

スクリーンショット 2022-11-23 10.36.14.png

アクション → メソッドの作成からPOSTメソッドを作成

統合リクエストの設定を行う。

  • 統合タイプ: Lambda関数
  • Lambda関数: 今回の手順で作成するLambda関数名

スクリーンショット 2022-11-23 10.34.41.png

続いてマッピングテンプレートの設定を行う。

Slack APIのContent-Typeである**application/x-www-form-urlencoded**を指定する。

スクリーンショット 2022-11-23 10.58.46.png

テンプレートの生成から「メソッドリクエストのパススルー」を選択

Slackコマンドを使ってみる

早速コマンドを使ってみます。
スクリーンショット 2022-12-01 9.05.13.png

Lambda関数で設定した、コマンド実行時のメッセージが返って来れば成功です。
スクリーンショット 2022-10-23 9.41.10.png

NewRelicでコーヒー摂取量を可視化

Slackコマンドによって、NewRelic上のhealthというイベントにcount_coffeeという属性でコーヒー摂取量を記録しました。

実際に自分がどのくらいコーヒーを飲んでいるか、NewRelic上で可視化してみます。

NewRelic > Dashboardに行き、ダッシュボードを作成します。
スクリーンショット 2022-12-01 9.11.20.png

作成したダッシュボードの右上の+ボタンをクリックし、Add Chartでグラフを作成します。

スクリーンショット 2022-12-01 9.12.15.png

スクリーンショット 2022-12-01 9.12.05.png

以下のNRQLを貼り付けてグラフを作成します。

SELECT sum(count_coffee) from health since 7 week ago TIMESERIES 1 week

スクリーンショット 2022-12-01 9.14.01.png

こんな感じでグラフで自分のコーヒー摂取量がグラフで可視化されます・・・!

Slack API, Lambda, NewRelicを組み合わせると、このようなちょっとしたライフログ的なものが作れます。

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1