Zabbix3.x系からSlack通知
概要
Zabbix3.x 系での Slack への障害内容通知方法をまとめました。
簡単なメッセージの通知でなく
ある程度見やすく、状況判断しやすい様にしました。
↓ まずざっくりとこんな感じです。
手順
Git に上げてます。ご参照ください。
Zabbix3.x 系での Slack への障害内容通知方法をまとめました。
簡単なメッセージの通知でなく
ある程度見やすく、状況判断しやすい様にしました。
↓ まずざっくりとこんな感じです。
Git に上げてます。ご参照ください。
話題の Line bot Api 用スクリプトを PHP で書きました。
とにかくシンプルに = カスタマイズしやすさ
という所で
修正する場所を限って利用できるようにしたつもりです。
適当に文字を打つと →「hello」
perfect と打つと → 「human」
と返すようにした本当にシンプルなものです。
そのロジック部分をカスタマイズすれば
マイ bot ができますね。
SSL は無料の StartSSL を利用しました。取得・設定は以下参照してください。
function getMessage
で bot に返信させたいメッセージを決定しています。
そこで他 API を呼んだり、サイトからスクレイプしたり情報をとってきて返してあげると
簡易的なメッセージ返信 Line bot できあがりです。
rsync を Jenkins や crontab で利用する場合
SSH 経由で実行する際、
パスワードを求められ処理が中断してしまうということがあるかと思います。
その為、SSH で公開鍵認証という方法でパスワードを求めることなく
SSH アクセスできる様な設定を明示的にしました。
以下まとめます。
サーバ A → サーバ B へ 公開鍵認証で SSH ログインを目的とします。
以下手順です。
1 | [host A]# mkdir ~/.ssh |
1 | [host B]# cd ~ |
1 | [host B]# vi /etc/hosts.allow |
1 | # |
1 | [host B]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bk |
1 | [host B]# vi /etc/ssh/sshd_config |
1 | #PubkeyAuthentication yes ← コメントアウトを外す |
1 | [host B]# diff /etc/ssh/sshd_config.bk /etc/ssh/sshd_config |
1 | [host B]# sshd -t |
1 | [host B (CentOS7)]# systemctl restart sshd |
以上で接続先サーバでの準備完了しました。
1 | [host A]# ssh 192.168.11.201 |
ログイン成功!
権限や所有権がよろしくない、
ということで認証失敗理由がわかります。
1 | # tail -f /var/log/secure |
以下デフォルトの sshd_config
の設定の場合
パスワード認証と鍵認証、どちらも認証パス可能です。
1 | #PubkeyAuthentication yes |
インフラ専門の会社さんや街の噂では
デフォルトでどちらも認証 OK にしている企業さん多いという話でした。
以上です。
ある顧客データを抽出してレポートしたい、というときに
CSV ファイルで “090” などと携帯電話があると Excel で CSV ファイルを開いたときに
“90” になってしまうということがあるかと思います。
そんなときの為に特定列のみ数値を文字列扱いにしたときの内容まとめです。
1 | "090" |
とあったとすると
1 | ="090" |
のように整形することで文字列扱いになります。
例)
1 | "デミスハサビス",="09099999999","DeepMind" |
1 | "デミスハサビス","09099999999","DeepMind" |
1 | $ awk -F ',' '{print $1 ",="$2","$3}' tmp.csv |
上記のように 「=」 が追加されました。
1 | $ awk -F ',' '{print $1 ",="$2","$3}' tmp.csv > output.csv |
output.csv を Excel で開いてみます。
できました ♪
Excel を開く際、Windows ではデフォルト SJIS なので文字コードが UTF8 の場合、文字化けします。
以下 CSV ファイルを SJIS に文字コード変換します。
1 | $ nkf -sLw output.csv > output_sjis.csv |
以上です。
.htaccess に設定した通りに動作しない、そもそも読み込んでいないように見える場合の対策です。
http だと mod_rewrite でリダイレクトするけど、 https だとしない、とか
ありがちな設定ミスパターンは以下基本的なことを確認して解決できます。
/etc/httpd/conf/httpd.conf
等設定ファイル内で以下の記述が必要です。
1 | AllowOverride All |
利用頻度の多い mod_rewrite を利用するには以下が必要です。
まずは上記の確認です。
Apache の場合、大抵 modles ディレクトリ以下に格納されてます。
1 | $ ls -al /etc/httpd/modules/mod_rewrite.so |
Apache 設定ファイル/etc/httpd/conf/httpd.conf
や /etc/httpd/conf.d/*.conf
で以下を設定している。
※環境によっては /etc/httpd/conf/httpd.conf
に設定ファイルを置いてない場合もあるので
あくまで一般的な例とします。
1 | LoadModule rewrite_module modules/mod_rewrite.so |
モジュール読み込み設定は大抵、
以下のように
以下例では「/var/www/html」ディレクトリ以下では 配置した .htaccess を優先して設定されることになります。
1 | <Directory "/var/www/html"> |
万が一 mod_rewrite.so モジュールが存在しない場合は Apache の再コンパイルが必要になります。
1 | $ sudo su - |
以上です。
EC サイトの売上のレポートなどを送信したい、というとき
ファイル名に日本語を指定せざるを得ないとき(クライアントさんが「絶対に日本語!」)
がときたまあります。
Linux で作成したファイルのデフォルト文字コードが UTF-8 だった場合
メールに添付し送信し、受信した Windows PC でダウンロードすると
ファイル名が文字化けしてる、
なんてことがあります。
そんなとき、ファイルの中身でなくファイル名自体の文字コードを変更したので
その対応まとめです。
convmv を利用します。
1 | # yum install -y convmv |
1 | // UTF-8 でファイル名「ほげほげ」作成 |
全く読み取れないような文字になります。
ごく稀に「絶対日本語で!」という方の一助になれば何よりです。
MySQL SELECT 文の結果を csv で取得する際
以下のように CLI 上で実行することで取得できます。
1 | $ mysql -u <user> -p<password> <db_name> |
ですが、mysql ログインユーザ
以下のようなエラーで出力できません。
1 | RROR 1 (HY000): Can't create/write to file '/tmp/output.csv' (Errcode: 13) |
FILE の READ/WRITE 権限を付与すれば問題ないですが
権限周りをいじりたくないときなどあるかと思います。
本番環境の DB で権限周りがブラックボックス化していて
FLUSH PRIVILEGES すると何か障害が出るんじゃないかとか汗
その際に実施したことを以下まとめました。
TXT として取得して sed で csv ファイルに加工する、
という方法で実行しています。
例) 以下のような SQL 実行結果を取得したとすると
1 | $ less output.txt |
↓ Excel で表示されるように加工すると
1 | $ less output.txt |
1 | $ mysql -u <user> -p<password> <db_name> -e"<query>" > output.txt |
1 | // 各行の一番前(「^」)に「"」を付加 |
この CSV を利用する方(提出先)の方の文字コードに合わせます。
提出先では Shift JIS がデフォルトとのことで そこに変更します。
1 | $ nkf -g output4.txt |
1 | $ nkf -sLw output4.txt > output.csv |
これで INTO OUTFILE を利用せず CSV ファイルを取得できました。
ouput.csv
ファイル名に日付をつける。
1 | $ mv output.csv output_`date '+%Y%m%d'`.csv |
1 | $ ls |
Statsbot は、GoogleAnalytics、NewRelic、Mixpanel と連携し
各データを Slack へ通知できるサービスです。
連携自体は画面中央の Add to Slack
ボタンを押下し
各種手続きを手順通り行えばすぐに連携できます。
※導入まで 10 秒ほどでした。
データホテルさんが導入法まとめていたので参考までに。
各種設定方法がありますが、どんな見え方になるかは
試してみないとわからなかったので、まとめました。
設定は大きく 3 つあります。
Item | Detail |
---|---|
Metrics | セッション数,ユーザ数,コンバージョン,直帰率,新規ユーザ, |
Alert | ユーザ,コンバージョン,イベントが閾値を超える or 下がると通知 |
Reports | まとめ(ユーザ数, 新規ユーザ数, PV, コンバージョン数, コンバージョン率, イベント数, 平均セッション時間(秒))を通知 |
以下設定を通知の見え方です。
※データは知り合いの EC サイトです。
恥ずかしいデータもありますが、StatsBot の導入を条件に快く許諾いただきました(^-^)
1 | @Statsbot sessions [today, yesterday, this week, last week, this month, last month, this year] |
1 | @Statsbot users [today, yesterday, this week, last week, this month, last month, this year] |
1 | @Statsbot conversions [today, yesterday, this week, last week, this month, last month, this year] |
1 | @Statsbot conversion rate [today, yesterday, this week, last week, this month, last month, this year] |
1 | @Statsbot bounce rate [today, yesterday, this week, last week, this month, last month, this year] |
1 | @Statsbot new users [today, yesterday, this week, last week, this month, last month, this year] |
例) 今週の新規ユーザ (先週との比較)
1 | @Statsbot new users this week |
例) 今日の新規ユーザ (昨日との比較)
1 | @Statsbot new users today |
– Stay on top of your website traffic –
1 | @Statsbot alert [users, conversions, events] [above, below, >, <] NUM |
例) ユーザ数が 1000 人を超えたらアラート設定
1 | @Statsbot alert users > 1000 |
1 | @Statsbot list alerts |
1 | @Statsbot alert remove ID |
1 | @Statsbot summary [today, yesterday, this week, last week, this month, last month, this year] |
1 | @Statsbot sources [today, yesterday, this week, last week, this month, last month, this year] |
1 | @Statsbot schedule [summary, sources, status] |
1 | @Statsbot list schedule |
1 | @Statsbot unschedule ID |
[f:id:kenzo0107:20160310115924p:plain]
最近では URL に日本語を利用するケースが増えてきました。
SEO として価値がある作業かどうかは眉唾ではありますが
ネット利用率の低い方にとっては UI としては分かりやすいのかもしれません。
その点を論じているブログがありました。
日本語を含む URL を Twitter へ投稿するようなソーシャル連携ツール等の開発の際、
文字数に厳密に注意する必要があり、短縮の自動化を bitly API で行いましたので
そのまとめです。
bitly.com に登録する
[https://bitly.com/a/oauth_apps]にて Access Token
を取得
以上