InfluxDB is implemented in Go language. So, we need build and debug tools in Go language.
1. Prerequisites
Version of InfluxDB: InfluxDB 2.0
Target Machine: CentOS7
Host Machine: Windows10
2. Preparation in taget machine
Perform the follwing steps in target machine
(1) Install gvm(go version manager)
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
(2) Install build tools for Go language
gvm install go1.15
gvm use go1.15 --default
(3) Install Git
yum -y install https://repo.ius.io/ius-release-el7.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install git --enablerepo=ius --disablerepo=base,epel,extras,updates
(4) Install Bazaar which is a version control system
yum -y install bzr
(5) Install nodejs
yum install https://rpm.nodesource.com/pub_10.x/el/7/x86_64/nodejs-10.23.0-1nodesource.x86_64.rpm
(6) Install yarn which is a package manager for nodejs
yum install yarn
(7) Install build tools for Rust language
curl https://sh.rustup.rs -sSf | sh
source ~/.cargo/env
(8) Install clang which is a C language compiler
yum install clang
yum install llvm-devel
export LLVM_CONFIG_PATH=/bin/llvm-config
export LIBCLANG_PATH=/usr/lib64/llvm
(9) Download the source code of InfluxDB. Hereinafter, we call <src> the directory in which you download source codes of InfluxDB.
Download link: https://github.com/influxdata/influxdb/tree/v2.0.0
3. Preparation in host machine
Install Visual Studio Code and enable remote debugging using vscode-go. For these steps, Refet to 6.(2) and so on.
4. Building InfluxDB
(1) Change directory to <src>
(2) Change “GO_BUILD_ARGS” in ./MakeFile for debugging
Before:
GO_BUILD_ARGS := -tags ‘$(GO_BUILD_TAGS)’
After:
GO_BUILD_ARGS := -tags ‘$(GO_BUILD_TAGS)’ -gcflags=all=’-N -l’
(3) Build with make command
make
5. Debugging
Perform the following steps in Visual Studio Code for debugging influxd which is a backend process of InfluxDB.
(1) Connect to remote machine from host machine
(2) Select [Run]>[Add Configuration]>[Go launch file] and add the following configuration
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch file",
"type": "go",
"request": "launch",
"mode": "exec",
"program": "<src>/bin/linux/influxd"
}
]
}
(3) Create any break point on main function “<src>/influxdb-2.0/cmd/main.go”
(4) Press “F5” for starting debug
6. References
(1) Build InfluxDB 2.0 from source codes
https://github.com/influxdata/influxdb/blob/master/CONTRIBUTING.md
(2) Debuging using vscode-go
https://github.com/golang/vscode-go/blob/master/docs/debugging.md