1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

New Relic のSQL Server オンホストインテグレーションをLinuxで動かす

Posted at

先日の記事でSQL Serverのオンホストインテグレーションを紹介しました。

New Relic オンホストインテグレーションでMicrosoft SQL Serverを監視する

New Relicからサポート付きで提供しているのはWindows上のInfrastructureエージェントと一緒に動くWindows向けのバイナリなのですが、GitHubでソースが公開されており自分でビルドすることができます。今回Linux(Ubuntu18.04 LTS)上でビルドし、動作が確認できたのでご紹介したいと思います。

New Relicでも多数のリポジトリを公開しており、オンホストインテグレーションは先頭にnri-がついています。

MSSQLを始め、多くがgo言語で書かれておりクロスプラットフォーム向けにビルドが可能になっているようです。

ビルド済みのバイナリは提供されていないようですが、このリポジトリは次のようにビルドできます。go言語の環境設定に疎いので、次の手順でビルドできることは確認しましたが、好ましくない手順があればコメントいただければ幸いです。

まず、Ubuntu 18.04 LTSにこちらの手順に従い、パッケージマネージャー経由でgo言語のSDKをインストールします。
https://github.com/golang/go/wiki/Ubuntu

次にgo envコマンドを実行し、GOPATH、GOROOT、GOARCHが設定されていることを確認します。

$ go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/clouduser/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/clouduser/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/lib/go-1.12"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/go-1.12/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build312533019=/tmp/go-build -gno-record-gcc-switches"

$GOPATH/binPATH環境変数に追加します。

$ export PATH=$PATH:/home/clouduser/go/bin

そしてリポジトリをcloneしますが、$GOPATH/srcの配下かつ次のディレクトリ構造となるようにします。

$ cd ~
$ mkdir -p go/src/github.com/newrelic/
$ cd  go/src/github.com/newrelic/
$ git clone https://github.com/newrelic/nri-mssql.git
$ cd nri-mssql

最新のリリースタグをチェックアウトしてビルドを実行します。正常に完了すると、binの下に成果物が生成されます。

$ git checkout v2.0.2
$ make
$ file bin/nr-mssql
bin/nr-mssql: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, not stripped

これでビルドは完了です。ここからこのインテグレーションをInfrastrucutreエージェントに追加します。LinuxのInfrastrucutreエージェントをあらかじめインストールしておいてください。パッケージマネージャーを利用する場合の手順はこちらにあります。

またWindowsの場合と同様、監視対象のSQL Serverにログインとユーザーを作って、接続権限の設定を行っておきます。

USE master;
CREATE LOGIN newrelic WITH PASSWORD = '<password>';
CREATE USER newrelic FOR LOGIN newrelic;
GRANT CONNECT SQL TO newrelic;
GRANT VIEW SERVER STATE TO newrelic;

-- Goes through each user database and adds public permissions
DECLARE @name NVARCHAR(max)
DECLARE db_cursor CURSOR FOR
SELECT NAME
FROM master.dbo.sysdatabases
WHERE NAME NOT IN ('master','msdb','tempdb','model')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name WHILE @@FETCH_STATUS = 0
BEGIN
	EXECUTE('USE "' + @name + '"; CREATE USER newrelic FOR LOGIN newrelic;' );
	FETCH next FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor

リポジトリにあるmssql-definition.ymlと、ビルド成果物のbin/nri-mssql/var/db/newrelic-infra/newrelic-integrationsにコピーします。nri-mssqlは実行可能になっていることを確認してください。

$ sudo ls /var/db/newrelic-infra/newrelic-integrations/* -l
-rw-r--r-- 1 root root  214 Jul 31 03:07 /var/db/newrelic-infra/newrelic-integrations/mssql-definition.yml

/var/db/newrelic-infra/newrelic-integrations/bin:
total 8108
-rwxr-xr-x 1 root root 8302273 Jul 31 03:08 nr-mssql

リポジトリにあるmssql-config.yml.sample ファイルを/etc/newrelic-infra/integrations.d/mssql-config.ymlとしてコピーし、次のように記載します。

integration_name: com.newrelic.mssql

instances:
  - name: mssql-server
    command: all_data
    arguments:
      hostname: localhost
      username: newrelic
      password: <Password>
    labels:
      env: production
      role: mssql
      type: linux

ここまで設定できれば、Infrastrucureエージェントを再起動します。

$ sudo systemctl restart newrelic-infra

あとはログをみて正常に動いていることを確認しましょう。

$ journalctl -u newrelic-infra.service -f

正常に動いていれば、数分すればMSSQL Dashboardに表示されるようになるはずです。
GitHubで公開されているコードは直接サポートするものではありませんが、このような使い方もできるのでぜひ参考にしてみてください。

1
0
0

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
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?