Skip to content

Instantly share code, notes, and snippets.

@kenjiskywalker
Last active December 29, 2015 17:19
Show Gist options
  • Select an option

  • Save kenjiskywalker/7703670 to your computer and use it in GitHub Desktop.

Select an option

Save kenjiskywalker/7703670 to your computer and use it in GitHub Desktop.

Revisions

  1. kenjiskywalker revised this gist Nov 30, 2013. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions kyoto.md
    Original file line number Diff line number Diff line change
    @@ -181,9 +181,9 @@ chart2.php?graphid=535 &width=500 &period=86400 &stime=20131128 120000
    - [Zabbix::Senrigan](http://un.kenjiskywalker.org/senrigan/index.html)
    - [blog](http://blog.kenjiskywalker.org/blog/2013/10/17/senrigan/)

    10-1. 職人が機械では気付かないような変化に気づきやすくなった
    10-2. cpanfile置いてポータビリティ性持たせたけど敷居は高いと思う
    10-3. 色々先輩たちにききながらほしいものがつくれたのは今後の役に立つ
    10-1. 職人が機械では気付かないような変化に気づきやすくなった
    10-2. cpanfile置いてポータビリティ性持たせたけど敷居は高いと思う
    10-3. 色々先輩たちにききながらほしいものがつくれたのは今後の役に立つ

    ---

  2. kenjiskywalker revised this gist Nov 30, 2013. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions kyoto.md
    Original file line number Diff line number Diff line change
    @@ -170,8 +170,8 @@ chart2.php?graphid=535 &width=500 &period=86400 &stime=20131128 120000

    9-1. `graphs.name`で抽出したいグラフ名を指定
    9-2. `graphs.name``graphid`が取れる
    9-3. `graphiid`を利用してひたすらMechanizeでローカルにダウンロード
    9-4. `graph.name`を利用して個別ページを生成
    9-3. `graphiid`を利用してひたすらMechanizeでローカルにダウンロード
    9-4. `graph.name`を利用して個別ページを生成
    9-5. demoのようにページが生成されるので、よしななディレクトリに放り込む

    ---
  3. kenjiskywalker revised this gist Nov 29, 2013. 1 changed file with 1 addition and 3 deletions.
    4 changes: 1 addition & 3 deletions kyoto.md
    Original file line number Diff line number Diff line change
    @@ -157,9 +157,7 @@ templateでitem付与していない場合は`templateid IS NOT NULL`は消さ

    ### 8. グラフをMechanizeで取得する

    ```
    http://temple.kenjiskywalker.org/zabbix/chart2.php?graphid=535&width=500&period=86400&stime=20131128120000
    ```
    _http://temple.kenjiskywalker.org/zabbix/chart2.php?graphid=535&width=500&period=86400&stime=20131128120000_

    ```
    chart2.php?graphid=$graphid &width=$width &period=$period &stime=$days$time
  4. kenjiskywalker revised this gist Nov 29, 2013. 1 changed file with 10 additions and 9 deletions.
    19 changes: 10 additions & 9 deletions kyoto.md
    Original file line number Diff line number Diff line change
    @@ -13,7 +13,7 @@
    [4. Zabbixは人類に扱えるものなのか](https://gist.github.com/kenjiskywalker/7702724#4-zabbix)
    [5. 毎日カジュアルに全台の全メトリクスを見たい(もしくは気になるところをサクっと見たい)](https://gist.github.com/kenjiskywalker/7702724#5-)

    解決する
    解決する
    [6. Zabbixのスキーマ設計を確認](https://gist.github.com/kenjiskywalker/7702724#6-zabbix)
    [7. グラフ名でまとめるしかない](https://gist.github.com/kenjiskywalker/7702724#7-)
    [8. グラフをMechanizeで取得する](https://gist.github.com/kenjiskywalker/7702724#8-)
    @@ -41,15 +41,16 @@ Zabbixのプルダウン地獄から逃れる蜘蛛の糸
    ### 3. 機能としてのZabbix
    最高。これ以上ないと思う

    3-1. メトリクスとアラートの両立
    **3-1. メトリクスとアラートの両立**
    Zabbixだけでメトリクス取得とそのメトリクスの値を利用したアラートの設定ができる

    3-2. 取得アイテム数値の柔軟性
    **3-2. 取得アイテム数値の柔軟性**
    その値ではなく、前回と今回の差分をアイテムとして保存できる

    3-3. アラート設定の柔軟性
    **3-3. アラート設定の柔軟性**
    1週間前の同じ時間帯前後30分と比べて〜のように時空を超えて設定できる

    3-4. グラフ設定の柔軟性
    **3-4. グラフ設定の柔軟性**
    積算・円など設定が可能

    ---
    @@ -171,8 +172,8 @@ chart2.php?graphid=535 &width=500 &period=86400 &stime=20131128 120000

    9-1. `graphs.name`で抽出したいグラフ名を指定
    9-2. `graphs.name``graphid`が取れる
    9-3. `graphiid`を利用してひたすらMechanizeでローカルにダウンロード(いつから・どのぐらいの期間のデータも合わせて指定)
    9-4. `graph.name`を利用して個別ページを生成(1ページに大量にグラフを表示すると重くなるので`Zabbix::Senrigan.view_graph_num`で適当に分割できるようにしてある)
    9-3. `graphiid`を利用してひたすらMechanizeでローカルにダウンロード
    9-4. `graph.name`を利用して個別ページを生成
    9-5. demoのようにページが生成されるので、よしななディレクトリに放り込む

    ---
    @@ -182,8 +183,8 @@ chart2.php?graphid=535 &width=500 &period=86400 &stime=20131128 120000
    - [Zabbix::Senrigan](http://un.kenjiskywalker.org/senrigan/index.html)
    - [blog](http://blog.kenjiskywalker.org/blog/2013/10/17/senrigan/)

    10-1. 職人が機械では気付かないような変化に気づきやすくなった(もっと細かいアラートを設定するかどうかは場合による)
    10-2. cpanfile置いてポータビリティ性持たせたけどグラフ生成するのにMechanizeとDB接続が必要なので使いづらいと思う
    10-1. 職人が機械では気付かないような変化に気づきやすくなった
    10-2. cpanfile置いてポータビリティ性持たせたけど敷居は高いと思う
    10-3. 色々先輩たちにききながらほしいものがつくれたのは今後の役に立つ

    ---
  5. kenjiskywalker created this gist Nov 29, 2013.
    193 changes: 193 additions & 0 deletions kyoto.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,193 @@
    # Monitoring Casual Talk in Kyoto

    [Monitoring Casual Talk in Kyoto](http://www.zusaar.com/event/1377006)

    ### Zabbix::Senriganをつくった話をします

    ## もくじ

    課題があった
    [1. これはなにか](https://gist.github.com/kenjiskywalker/7702724#1-)
    [2. なにがつらいのか](https://gist.github.com/kenjiskywalker/7702724#2-)
    [3. 機能としてのZabbix](https://gist.github.com/kenjiskywalker/7702724#3-zabbix)
    [4. Zabbixは人類に扱えるものなのか](https://gist.github.com/kenjiskywalker/7702724#4-zabbix)
    [5. 毎日カジュアルに全台の全メトリクスを見たい(もしくは気になるところをサクっと見たい)](https://gist.github.com/kenjiskywalker/7702724#5-)

    解決する
    [6. Zabbixのスキーマ設計を確認](https://gist.github.com/kenjiskywalker/7702724#6-zabbix)
    [7. グラフ名でまとめるしかない](https://gist.github.com/kenjiskywalker/7702724#7-)
    [8. グラフをMechanizeで取得する](https://gist.github.com/kenjiskywalker/7702724#8-)
    [9. グラフ一覧のつくりかた](https://gist.github.com/kenjiskywalker/7702724#9-)
    [10. Zabbix::Senrigan後の世界](https://gist.github.com/kenjiskywalker/7702724#10-zabbixsenrigan)

    まとめ
    [まとめ](https://gist.github.com/kenjiskywalker/7702724#3-)


    ## 課題があった

    ### 1. これは何か
    Zabbixのプルダウン地獄から逃れる蜘蛛の糸

    ---

    ### 2. なにがつらいのか
    [再現](http://temple.kenjiskywalker.org/zabbix)してみよう

    想像力が必要

    ---

    ### 3. 機能としてのZabbix
    最高。これ以上ないと思う

    3-1. メトリクスとアラートの両立

    3-2. 取得アイテム数値の柔軟性
    その値ではなく、前回と今回の差分をアイテムとして保存できる

    3-3. アラート設定の柔軟性
    1週間前の同じ時間帯前後30分と比べて〜のように時空を超えて設定できる

    3-4. グラフ設定の柔軟性
    積算・円など設定が可能

    ---

    ### 4. Zabbixは人類に扱えるものなのか
    機能が多すぎる

    ---

    ### 5. 毎日カジュアルにサーバ全台の全メトリクスを見たい
    見れるようなものつくろう

    ## 解決する

    ### 6. Zabbixのスキーマ設計を確認

    _グラフのテーブル_

    ```
    CREATE TABLE `graphs` (
    `graphid` bigint unsigned NOT NULL,
    `name` varchar(128) DEFAULT '' NOT NULL,
    `width` integer DEFAULT '0' NOT NULL,
    `height` integer DEFAULT '0' NOT NULL,
    `yaxismin` double(16,4) DEFAULT '0' NOT NULL,
    `yaxismax` double(16,4) DEFAULT '0' NOT NULL,
    `templateid` bigint unsigned NULL,
    `show_work_period` integer DEFAULT '1' NOT NULL,
    `show_triggers` integer DEFAULT '1' NOT NULL,
    `graphtype` integer DEFAULT '0' NOT NULL,
    `show_legend` integer DEFAULT '1' NOT NULL,
    `show_3d` integer DEFAULT '0' NOT NULL,
    `percent_left` double(16,4) DEFAULT '0' NOT NULL,
    `percent_right` double(16,4) DEFAULT '0' NOT NULL,
    `ymin_type` integer DEFAULT '0' NOT NULL,
    `ymax_type` integer DEFAULT '0' NOT NULL,
    `ymin_itemid` bigint unsigned NULL,
    `ymax_itemid` bigint unsigned NULL,
    `flags` integer DEFAULT '0' NOT NULL,
    PRIMARY KEY (graphid)
    ) ENGINE=InnoDB;
    ```

    _ホストのテーブル_

    ```
    CREATE TABLE `hosts` (
    `hostid` bigint unsigned NOT NULL,
    `proxy_hostid` bigint unsigned NULL,
    `host` varchar(64) DEFAULT '' NOT NULL,
    `status` integer DEFAULT '0' NOT NULL,
    `disable_until` integer DEFAULT '0' NOT NULL,
    `error` varchar(128) DEFAULT '' NOT NULL,
    `available` integer DEFAULT '0' NOT NULL,
    `errors_from` integer DEFAULT '0' NOT NULL,
    `lastaccess` integer DEFAULT '0' NOT NULL,
    `ipmi_authtype` integer DEFAULT '0' NOT NULL,
    `ipmi_privilege` integer DEFAULT '2' NOT NULL,
    `ipmi_username` varchar(16) DEFAULT '' NOT NULL,
    `ipmi_password` varchar(20) DEFAULT '' NOT NULL,
    `ipmi_disable_until` integer DEFAULT '0' NOT NULL,
    `ipmi_available` integer DEFAULT '0' NOT NULL,
    `snmp_disable_until` integer DEFAULT '0' NOT NULL,
    `snmp_available` integer DEFAULT '0' NOT NULL,
    `maintenanceid` bigint unsigned NULL,
    `maintenance_status` integer DEFAULT '0' NOT NULL,
    `maintenance_type` integer DEFAULT '0' NOT NULL,
    `maintenance_from` integer DEFAULT '0' NOT NULL,
    `ipmi_errors_from` integer DEFAULT '0' NOT NULL,
    `snmp_errors_from` integer DEFAULT '0' NOT NULL,
    `ipmi_error` varchar(128) DEFAULT '' NOT NULL,
    `snmp_error` varchar(128) DEFAULT '' NOT NULL,
    `jmx_disable_until` integer DEFAULT '0' NOT NULL,
    `jmx_available` integer DEFAULT '0' NOT NULL,
    `jmx_errors_from` integer DEFAULT '0' NOT NULL,
    `jmx_error` varchar(128) DEFAULT '' NOT NULL,
    `name` varchar(64) DEFAULT '' NOT NULL,
    PRIMARY KEY (hostid)
    ) ENGINE=InnoDB;
    ```



    [![](http://tiqav.com/2rQ.jpg)](http://tiqav.com/2rQ)
    > powerd by tiqav
    ---

    ### 7. グラフ名でまとめるしかない

    ホストに`graphid`の情報が関連付けられていないのでグラフ名でまとめるしかない

    > my $sth = $dbh->prepare('SELECT graphid FROM graphs WHERE name = ? \
    > AND templateid IS NOT NULL');
    > $sth->execute($graph_name);
    templateでitem付与していない場合は`templateid IS NOT NULL`は消さないとダメ
    そもそもtemplateかhostかがわかるフラグがあればいい。(ありそう)


    これでグラフ名毎のグラフIDは取得できることがわかった

    ---

    ### 8. グラフをMechanizeで取得する

    ```
    http://temple.kenjiskywalker.org/zabbix/chart2.php?graphid=535&width=500&period=86400&stime=20131128120000
    ```

    ```
    chart2.php?graphid=$graphid &width=$width &period=$period &stime=$days$time
    chart2.php?graphid=535 &width=500 &period=86400 &stime=20131128 120000
    ```

    ---

    ### 9. グラフ一覧のつくりかた

    9-1. `graphs.name`で抽出したいグラフ名を指定
    9-2. `graphs.name``graphid`が取れる
    9-3. `graphiid`を利用してひたすらMechanizeでローカルにダウンロード(いつから・どのぐらいの期間のデータも合わせて指定)
    9-4. `graph.name`を利用して個別ページを生成(1ページに大量にグラフを表示すると重くなるので`Zabbix::Senrigan.view_graph_num`で適当に分割できるようにしてある)
    9-5. demoのようにページが生成されるので、よしななディレクトリに放り込む

    ---

    ### 10. Zabbix::Senrigan後の世界

    - [Zabbix::Senrigan](http://un.kenjiskywalker.org/senrigan/index.html)
    - [blog](http://blog.kenjiskywalker.org/blog/2013/10/17/senrigan/)

    10-1. 職人が機械では気付かないような変化に気づきやすくなった(もっと細かいアラートを設定するかどうかは場合による)
    10-2. cpanfile置いてポータビリティ性持たせたけどグラフ生成するのにMechanizeとDB接続が必要なので使いづらいと思う
    10-3. 色々先輩たちにききながらほしいものがつくれたのは今後の役に立つ

    ---

    ### まとめ

    目を閉じたらすべてのサーバのメトリクスの情報が手に入るようにしたい