![Observabilityをはじめよう!(後編) 〜Metrics/Logs/Tracesチュートリアル〜 | さくらのナレッジ](https://cdn-ak-scissors.b.st-hatena.com/image/square/beb7caa03a162f08705c270fb8cd70fc8d5f7a1f/height=288;version=1;width=512/https%3A%2F%2Fknowledge.sakura.ad.jp%2Fwp-content%2Fuploads%2F2020%2F10%2Fobservability2.png)
はじめに 仲亀と申します。さくらインターネットでエバンジェリストやインフラエンジニアをしています。エンジニアとしてはシステムの監視まわりの仕事をしています。最近は、今回もご紹介するPrometheusとかGrafana Lokiとか、あの辺が結構好きで触っています。 この記事では、監視について興味をお持ちの皆さんに向けて「Observabilityをはじめよう!」ということで、Observabilityの概念や、それが必要となる背景を少し説明した上で、Observabilityを実現するための要素となる、MetricsやLogsやTracesなどをどこから始めていけばいいんだろう、といったところをご紹介していこうと思います。 この記事のゴールとしては、皆さんに「Observability完全に理解した」と言っていただけたらいいかなと思っています。しかし、この記事を読んだだけですぐに皆さんの
はじめに さくらのクラウドには、組み合わせると便利に使えるツールがたくさんあります。この記事では、Ansible, Pulumi, Prometheusを組み合わせて、構成管理を省力化するテクニックを紹介します。これらは業務で実際に利用しているツールやフローです。 さくらのクラウドについて 簡単にさくらのクラウドの紹介をします。 データの転送料が無料です。AWSなどを使っている人には驚かれることが多いです。 コントロールパネルが直観的に操作できると思います。 最小構成の料金が1,980円(1コア1GBサーバ+20GB SSD)です。さくらのVPSなどと比べると中規模以上のシステムを組む方が利用されるのかなと思います。 ネットワーク関連サービスが豊富で、例えばこんなのがあります。 さくらのVPS/さくらの専用サーバ/AWSとの接続 GSLB, L4/L7ロードバランサー セキュアモバイルコネ
はじめに この記事では、Linuxカーネルに実装されているパケットフィルタであるeBPFを使ったトレーシングツール、具体的にはDTrace, SystemTap, bpftrace,bcc-toolsなどについて紹介させていただきます。この記事の目標を以下に示します。 DTraceやSystemTapを簡単に説明し、eBPFを用いたトレーシングのうれしいところをお伝えします。 bpftraceやbcc-toolsといったツールの簡単な使い方を紹介し、細かいツールを調べる上での足がかりになるようにします。 公式の資料がかなり充実していることをお伝えします。この記事で使っている画像はそこから使わせていただいています。 eBPF概説 eBPFは、Linuxカーネル3.15からBPF(Berkeley Packet Filter)の拡張仕様として導入されました。BPFはこれまでにもパケットフィルタ
たとえば次のような「user.proto」というプロトコル定義ファイルを用意し、これを変換する例を見てみよう。 syntax = "proto3"; message Picture { uint32 id = 1; uint32 width = 2; uint32 height = 3; enum PictureType { PNG = 0; JPEG = 1; GIF = 2; } PictureType type = 4; } message User { uint32 id = 1; string nickname = 2; string mail_address = 3; enum UserType { NORMAL = 0; ADMINISTRATOR = 1; GUEST = 2; DISABLED = 3; } UserType user_type = 4; repeated
これまでの記事では、自作OSとそれを取り巻く状況について触れてきましたが、今回と次回は少し視点を変えて、自作OS開発で使うツールのデバッグや、それを通した貢献(contribute)の話をしたいと思います。 自作OSに限らず何かを開発する際には、たいていの場合、他の誰かが作ったツールを利用することになります。たとえば、CコンパイラとしてのClangや、デバッグのためのエミュレータとしてのQEMU, CやC++の標準ライブラリとしてのNewlibやlibc++などを、私の自作OS liumOS では利用しています。これらのソフトウエアは、ソースコードが公開されており、インターネット上の誰もが開発に参加することが可能です。 これらの開発ツールは、世界中のたくさんのユーザーに利用されるうちに、バグが見つかったり機能追加のリクエストが来たりすることで、完成度が次第に高まってきます。しかし、多くの人
たとえば、インストール先として/dev/vdaを指定し、Ignitionの設定ファイルのURLが「http://192.0.2.100:8080/container/simple.json」、イメージファイルが「http://192.0.2.100:8080/container/fedora-coreos-31.20191127.1-metal.x86_64.raw.xz」の場合、次のようにcoreos-installerを実行すれば良い。 # /usr/libexec/coreos-installer -d vda -i http://192.0.2.100:8080/container/simple.json -b http://192.0.2.100:8080/container/fedora-coreos-31.20191127.1-metal.x86_64.raw.xz ちなみに
TLS1.2までのciphersuiteに比べ、非常にすっきり書けるようになりました。 HTTP/2とは HTTP/2 ( Hypertext Transfer Protocol version 2 ) とは、2015年2月にRFC7540として発効された Hypertext Transfer Protocol の新しいプロトコルです。 詳しい仕組みにつきましては、当さくらのナレッジに 普及が進む「HTTP/2」の仕組みとメリットとは という松島浩道さんが書かれた記事がありますので、そちらを参照いただきたいと思いますが、本記事ではTLSとの関係性の部分について掘り下げて紹介したいと思います。 HTTP/2では過去のHTTP1.1や1.0と互換を保つため、使用するデフォルトのポート番号もHTTPの場合は 80番 HTTPSの場合は 443番 で変化はありません。また、コネクションを貼る際には
こんにちは。 ゴリラ.vimを運営しているゴリラです。 前回の記事では挿入モードとビジュアルモードをみなさんに解説しました。今回は筆者が好きなコマンドラインモードについて、便利な機能を解説していきます。特に外部コマンド連携はとても便利なので、ぜひ最後まで読んでみてください。 初回の記事ではVimでファイルを保存したりするのにコマンドラインモードで:wといったコマンドを実行すると解説しました。コマンドラインモードで実行できるコマンドはExコマンドと呼ばれています。Exコマンドは単にファイルを保存したり、Vimを終了したりするだけでなく、他にも新しいウィンドウを作成したり、ヤンクやプットなどを行うことができます。 ウィンドウについて Vimを使用していると複数のファイルを同時に開いて差分を確認したり、編集したりしたくなる場合があります。Vimは標準で画面(以降ウィンドウと呼ぶ)を分割する機能を
最近ではWebサイトを構築する際にWordPressなどのCMS(コンテンツ管理システム)を利用することが多いが、今日でも静的なHTMLファイルを使ったサイト構築には多くのメリットがある。今回は、こうしたHTMLファイルベースのサイト構築を支援するHTMLファイル生成ツール「Hugo」を紹介する。 静的ファイルでサイトを作るための支援ツール「Hugo」 コンテンツの作成や編集の容易さから、昨今ではWebサイトを構築する際にCMSを利用する例が多い。ただ、CMSを使用するにはCMS自体のインストールや設定、データベースの準備などが必要であるため、更新頻度の低いサイトやページ数の少ないサイトでは静的なHTMLファイルを使って構築したほうがコストが低くなる場合がある。 とはいえ、HTMLファイルをいちいち手動で作成するのは楽ではない。そのため、HTMLファイルを半自動生成するようなツールが数多く
たとえば、かつてiptablesで設定していたIPv4に関連するパケットフィルタリング設定は、nftablesにおいては「ip」というアドレスファミリに紐付けたテーブルを作成することで設定できる。同様に、ip6tablesやarptables、ebtablesで設定していたものはそれぞれ「ip6」や「arp」、「bridge」というアドレスファミリに紐付けたテーブルで設定する。 「inet」「および「netdev」アドレスファミリはnftablesで新たに導入されたもので、まず「inet」はIPv4およびIPv6の両方を対象にした設定を行えるアドレスファミリだ。従来IPv4とIPv6の両方にまたがったフィルタリングルールを設定したい場合はiptablesとip6tablesの両方で同じようなルールを追加する必要があったが、nftablesではinetアドレスファミリで指定することで単一の設
Kubernetesはさまざまな環境で利用され、かつ不特定多数がクラスタにアクセスできることを前提に構築されており、そのため非常に柔軟なユーザー認証機構やユーザーの権限を管理する機能が組み込まれている。本記事ではこれらの認証や権限確認機構がどのように働くのかや、その仕組みについて解説する。 Kubernetesにおける認証の必要性 Kubernetesはさまざまな企業・組織が参加するオープンな組織「Cloud Native Computing Foundation(CNCF)」によって開発が進められているが、元々はGoogleによってその開発がスタートしたプロジェクトであり、同社の持つコンテナクラスタ管理技術を元にしている。そのため、Kubernetesは当初から不特定多数がアクセスできるパブリッククラウドでの利用が想定されており、そういった環境でもセキュアかつ柔軟に利用できるよう設計され
Kubernetesが標準で提供するリソースの一覧はAPIドキュメントで確認できる。また、独自のリソースを定義して利用することもできる。 Kubernetesでは、「マニフェスト(manifest)」と呼ばれる形式で各種リソースを定義する。マニフェストは木(ツリー)構造で表現できるデータであり、たとえばコマンドラインツール「kubectl」ではYAML形式で記述されたマニフェストを元にリソースの作成や削除、変更といった操作を行える。 kubectlの使い方についてはドキュメントを参照して欲しいが、たとえば、DockerHubで公開されている「httpd」コンテナイメージを利用してApache HTTP Serverを実行させるには、まず次のようなマニフェストファイルを用意する。 apiVersion: v1 kind: Pod metadata: name: httpd labels: a
なお、利用できる属性値はAttribute Vocabularyドキュメントを、演算子についてはExpression Languageドキュメントを参照して欲しい。 今回は次のように、送信元および送信先、URLのパス部分、リクエストメソッド、トラフィックの方向という5つの情報をラベルとして付与するような設定でリソースを作成した。 apiVersion: config.istio.io/v1alpha2 kind: metric metadata: name: my-metric spec: value: "1" dimensions: source: source.labels["app"] | "unknown" destination: destination.labels["app"] | "unknown" path: request.path | "unknown" method
Istio環境の構築 さて、続いては実際にIstioを利用できるクラスタ環境を構築していく流れを紹介していこう。 前提条件 Istioの利用には、まずコンテナエンジンとしてDockerが必要となる。また、対応するコンテナクラスタはKubernetes(バージョン1.9以降)もしくはNomad+サービスディスカバリツールConsul環境となっている。ただし、現時点ではNomadベースのクラスタでの利用は未テストというステータスのようだ。そのため今回は独自に構築したKubernetesベースのクラスタ上でIstioを利用する流れを説明する。 なお、IstioはKubernetesのServiceやPod、Deploymentといった機能と連携して動作するようになっている。そのため、利用にはKubernetesの知識が前提となる。本記事もKubernetesに関する知識がないと理解が難しい点があ
最近では「マイクロサービス」と呼ばれる、機能毎に細かくサービスを分割して開発や運用を行うアーキテクチャの採用例が増えている。本記事ではこのマイクロサービスアーキテクチャや、それに使われる技術について紹介する。 マイクロサービスとは 近年、ITシステムの開発・運用において「Microservice(マイクロサービス)」というアーキテクチャを採用する例が増えている。マイクロサービスアーキテクチャは、簡単に言えばサービスを構成する各要素を「マイクロサービス」と呼ばれる独立した小さなコンポーネントとして実装するという手法で、2011年ごろから提唱されているものだ。 マイクロサービスについては、2014年に公開された「Microservices」という文書が有名だ(有志による日本語訳)。また、さくらのナレッジでも2015年に紹介されている。マイクロサービスの詳しい思想についてはこれら記事を参照してほ
Pythonには任意のコードを対話的に実行できる環境が用意されているが、昨今ではこの機能を強化した「IPython」や、それらをグラフィカルに利用できる「Jupyter Notebook」といったツールが登場している。これらはWindowsなどのGUIベースの環境でも使いやすく、グラフや画像の描画、テキストのフォーマッティングなど、視覚化やレポート作成に便利な機能も備えている。今回はこのIPythonやJupyter Notebookについて紹介する。 強力な対話的環境を提供 Pythonでは、コマンドラインから引数無しに「python」コマンドを実行するとコマンドプロンプト(「>>>」)が表示される。これはREPL(Read-Eval-Print-Loop)や対話的実行環境などと呼ばれるもので、入力したコードをその場で実行し、その結果を出力するという動きをする。 たとえば次の例は、REP
こんにちは、横山です。 先月は、以下のコンテナに関係する書籍が発売されましたね。 コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤 入門 Kubernetes 「コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤」では、物理マシンから、仮想化やコンテナ、クラウドへの移り変わりなどの背景も含めて書かれているのでおすすめです。 また、4/19(火)には、KubernetesやDockerを中心としたコンテナ活用の現状をひとまとめにした開発者のためのイベントである「Japan Container Days v18.04」がありますね。私も楽しみにしています。 はじめに 第二回では、DockerのインストールとDocker Hubで公開されているNginxのDockerイメージを使って
Dockerなどのコンテナ技術を使ったクラスタ技術の1つに「Kubernetes」がある。今回はこのKubernetesにおけるネットワーク関連の設定や、コンテナのデプロイについて紹介する。 今回紹介するKubernetesは、Googleが開発を主導するコンテナクラスタ構築ツールだ(図1)。Googleのクラウドサービスでも利用できることもあり、ここ数年で急激に利用者を増やしている。その勢いから、最近ではDockerも公式にKubernetesを公式にサポートすることを表明しており、今後もますます利用者が増えると予想される。 図1 KbernetesのWebサイト Kubernetesについては以前KubernetesによるDockerコンテナ管理入門という記事で基礎的な導入手順を紹介しているが、今回はネットワーク管理やサービスの管理など、より実用的な環境を構築するための方法を紹介する。
みなさん、こんにちは。Acroquest Technology (アクロクエストテクノロジー) の横山 仁(よこやま じん)と申します。 主に仕事ではインフラ関係やDevOps推進に向けた活動などに携わっています。最近では、今回の記事の内容でもあるDocker(ドッカー)を使うこともかなり増えてきて、他にもAnsibleであったり、CIツールのJenkinsなども使って、自動化や開発環境の整備などを主に行っています。 この度、さくらのナレッジでDockerの入門記事の連載をさせていただくことになりました。よろしくお願いします。 今回、Dockerについて、Dockerでどのようなことができるのか、どんな使い方をすると良いのかを、実際に手を動かすことを中心に、6回に分けて紹介していく予定です。前提として、Linuxの基本的な知識がある方を対象として書いていきます。 世の中が当たり前のようにD
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く