Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: merge v3.6.0 #7

Closed
wants to merge 41 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
e180657
begin next development iteration (#56)
brayniac Aug 15, 2023
3bbfef1
update dependencies (#59)
brayniac Aug 23, 2023
52f9ae5
Add support for cross compiling and arm64 debian package (#60)
swlynch99 Aug 23, 2023
183704c
prepare for release v3.3.3 (#61)
brayniac Aug 23, 2023
de415b7
begin next development iteration (#62)
brayniac Aug 23, 2023
f924dde
chore: cleanup (#64)
brayniac Sep 25, 2023
6b3d644
Add github actions job to upload deb packages as release artifacts (#65)
swlynch99 Sep 26, 2023
a5a2ffe
use percentiles api to reduce cost of calculating percentiles (#66)
brayniac Sep 27, 2023
2e0115b
Update warp to fix DoS in tungstenite (RUSTSEC-2023-0065)
mihirn Oct 4, 2023
b2a10cb
Extract the hwinfo sampler into a separate systeminfo crate (#68)
swlynch99 Oct 10, 2023
fb1c672
Clean up the `systeminfo` crate (#70)
swlynch99 Oct 10, 2023
a4b240d
update changelog and prepare for release 3.4.0 (#71)
brayniac Oct 10, 2023
a56dd59
begin next development iteration (#72)
brayniac Oct 10, 2023
08fba9b
Fix packaging release workflow (#73)
swlynch99 Oct 11, 2023
faf5aa9
update metriken to replace heatmaps (#67)
brayniac Oct 16, 2023
a9e8063
update changelog and prepare for release 3.5.0 (#74)
brayniac Oct 16, 2023
0e1b7c9
begin next development iteration (#75)
brayniac Oct 16, 2023
6c49779
add dependabot config (#76)
brayniac Oct 16, 2023
d53638e
fix: address clippy lints (#77)
brayniac Oct 16, 2023
35bc6d5
fix: dependabot config (#78)
brayniac Oct 16, 2023
cb88b25
feat: allow enabling/disabling of samplers (#63)
brayniac Oct 17, 2023
f8b55f9
chore: change dependabot versioning strategy (#81)
brayniac Oct 17, 2023
3c9ec3c
remove dependency on `clocksource` (#80)
brayniac Oct 17, 2023
e4e5ce5
chore(deps): bump regex-automata from 0.3.6 to 0.3.9 (#83)
dependabot[bot] Oct 17, 2023
6c4a4af
chore(deps): bump regex-syntax from 0.7.4 to 0.7.5 (#82)
dependabot[bot] Oct 17, 2023
758d73d
chore(deps): bump tracing-core from 0.1.31 to 0.1.32 (#84)
dependabot[bot] Oct 17, 2023
64f4f9f
chore(deps): bump the cargo-dependencies group with 38 updates (#85)
dependabot[bot] Oct 17, 2023
0065092
chore: remove clocksource from Cargo.toml
mihirn Oct 18, 2023
5be588e
feat: add TCP connection state sampler (#87)
brayniac Oct 20, 2023
1fb41f2
chore(deps): bump the cargo-dependencies group with 13 updates (#88)
dependabot[bot] Oct 24, 2023
dd83812
adjust tcp connection state sampler interval in example config (#89)
brayniac Oct 24, 2023
9feb36f
feat: add sampler for Rezolus itself (#90)
brayniac Oct 24, 2023
b7da36f
fix: histogram mmap length check (#92)
brayniac Oct 25, 2023
6a9377f
feat(sampler): change CPU features from a string to an array (#91)
swlynch99 Oct 25, 2023
3fc8a2f
feat: prometheus histograms (#94)
brayniac Oct 25, 2023
e433941
feat: track latencies for syscall famlies (#93)
brayniac Oct 26, 2023
3fa6a49
update changelog and prepare for release v3.6.0 (#95)
brayniac Oct 26, 2023
1f972e4
Merge tag 'v3.6.0'
krispraws Oct 30, 2023
e01542e
chore: relax clippy rules
krispraws Oct 30, 2023
bbb949a
chore: add dev-quick-deploy script
krispraws Oct 30, 2023
9ecbd33
Delete dev-quick-deploy.sh
krispraws Oct 31, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
version: 2
updates:
- package-ecosystem: cargo
directory: /
schedule:
interval: weekly
groups:
# Group together all dependency updates into a single PR
cargo-dependencies:
patterns:
- "*"
open-pull-requests-limit: 10
versioning-strategy: lockfile-only
allow:
- dependency-type: all
151 changes: 117 additions & 34 deletions .github/workflows/package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,50 +34,87 @@ env:

jobs:
build-deb:
name: ${{ matrix.distro }}
name: "${{ matrix.distro }}:${{ matrix.release }}"
runs-on: ubuntu-latest
container: ${{ matrix.distro }}
container: "${{ matrix.distro }}:${{ matrix.release }}"
strategy:
matrix:
distro:
- debian:bullseye # oldstable
- debian:bookworm # stable
- debian:trixie # testing

# - ubuntu:trusty # LTS until Apr 2024
# - ubuntu:xenial # LTS until Apr 2026
# - ubuntu:bionic # LTS until Apr 2028
- ubuntu:focal # LTS until Apr 2030
- ubuntu:jammy # LTS until Apr 2032
- ubuntu:kinetic # Previous release
- ubuntu:lunar # Current release
include:
- { distro: debian, release: buster }
- { distro: debian, release: bullseye }
- { distro: debian, release: bookworm }

# trusty and xenial are too old to properly support cross compiling
# (or a compiler that supports C++17).
# - { distro: ubuntu, release: trusty } # LTS until Apr 2024
# - { distro: ubuntu, release: xenial } # LTS until Apr 2026
- { distro: ubuntu, release: bionic } # LTS until Apr 2028
- { distro: ubuntu, release: focal } # LTS until Apr 2030
- { distro: ubuntu, release: jammy } # LTS until Apr 2032
- { distro: ubuntu, release: lunar } # Current release
fail-fast: false
env:
# dpkg-buildpackage issues a warning if we attempt to cross compile and
# tests are still enabled. Disabling the test step fixes this.
#
# Note that we don't run tests anyway so this doesn't really change
# anything for us.
DEB_BUILD_OPTS: nocheck
steps:
- uses: actions/checkout@v3

- name: setup some variables
id: vars
shell: bash
- name: modify /etc/apt/sources.list
if: ${{ matrix.distro == 'ubuntu' }}
run: |
echo distro="$(echo '${{ matrix.distro }}' | cut -d : -f 1)" >> "$GITHUB_OUTPUT"
echo release="$(echo '${{ matrix.distro }}' | cut -d : -f 2)" >> "$GITHUB_OUTPUT"

- name: Install apt dependencies
shell: bash
cat /etc/apt/sources.list | \
sed 's/^deb /deb [arch=amd64] /g' | \
grep '^deb ' \
> amd64.list

cat /etc/apt/sources.list | \
sed 's/^deb /deb [arch=arm64] /g' | \
grep archive.ubuntu.com | \
grep '^deb ' | \
sed 's|archive.ubuntu.com/ubuntu|ports.ubuntu.com|g' \
> arm64.list

cat amd64.list arm64.list > /etc/apt/sources.list
rm amd64.list arm64.list

- name: enable arm64 dpkg architecture
run: dpkg --add-architecture arm64

- name: install buildsystem apt dependencies
run: |
apt-get update
apt-get install -y curl build-essential pkg-config libssl-dev jq debhelper lsb-release \
cmake libclang-dev clang libelf-dev
apt-get install -y \
build-essential \
crossbuild-essential-arm64 \
curl jq lsb-release unzip gpg

- name: install rust
shell: bash
run: |
curl https://static.rust-lang.org/rustup/rustup-init.sh -o rustup-init.sh
chmod +x rustup-init.sh
curl -sSf https://sh.rustup.rs | sh /dev/stdin -y
echo "PATH=$HOME/.cargo/bin:$PATH" >> "$GITHUB_ENV"

- name: enable additional rustup targets
run: rustup target add aarch64-unknown-linux-gnu

# Newer clang versions need a newer version of libstdc++ then bionic provides.
- name: install a newer libstc++ version needed for clang
if: ${{ matrix.release == 'bionic' }}
run: |
apt-get -q install -y software-properties-common
add-apt-repository -y ppa:ubuntu-toolchain-r/test

./rustup-init.sh -y
echo "${CARGO_HOME:-$HOME/.cargo}/bin" >> $GITHUB_PATH
rm -f rustup-init.sh
# bpf-rs needs a newer version of clang than is available in older distro releases
- name: install a newer clang version
run: |
curl -sSL https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
cat > /etc/apt/sources.list.d/llvm.list <<EOM
deb http://apt.llvm.org/$(lsb_release -sc)/ llvm-toolchain-$(lsb_release -sc) main
EOM
apt-get -q update

- name: check cargo
shell: bash
Expand All @@ -95,13 +132,25 @@ jobs:
run: |
echo 'RELEASE=${{ github.event.inputs.release }}' >> $GITHUB_ENV

# Changelogs with revisions cause dpkg-source to emit an error when
# building. We only use the source package to install the build deps
# so building it with an invalid version is ok.
- name: build source package
run: dpkg-source --build .

- name: generate changelog
shell: bash
run: ./debian/gen-changelog.sh > debian/changelog

- name: build debs
shell: bash
run: dpkg-buildpackage -b -us -uc
- name: install arm64 build dependencies
run: apt-get build-dep -y -a arm64 ../rezolus*.dsc
- name: build arm64 package
run: dpkg-buildpackage -b -us -uc --host-arch arm64

- name: install x86_64 build dependencies
run: apt-get build-dep -y -a amd64 ../rezolus*.dsc
- name: build x86_64 package
run: dpkg-buildpackage -b -us -uc --host-arch amd64

- name: copy debs
shell: bash
Expand All @@ -113,7 +162,7 @@ jobs:
- uses: actions/upload-artifact@v3
with:
path: target/debian/*
name: ${{ steps.vars.outputs.distro }}_${{ steps.vars.outputs.release }}_all
name: ${{ matrix.distro }}_${{ matrix.release }}_all

upload-to-apt-repo:
if: ${{ github.event_name == 'release' || github.event_name == 'workflow_dispatch' }}
Expand Down Expand Up @@ -147,3 +196,37 @@ jobs:
gcloud artifacts apt upload "$release" --source "$artifact"
echo "::endgroup::"
done

upload-release-artifacts:
if: ${{ github.event_name == 'release' }}
runs-on: ubuntu-latest
needs:
- build-deb
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
path: target/debian/

- name: upload packages
shell: bash
run: |
set -x
shopt -s nullglob

url="$(echo '${{ github.event.release.upload_url }}' | sed -e 's/{.*}//g')"

for artifact in target/debian/**/*; do
name="$(basename "$artifact")"
directory="$(basename "$(dirname "$artifact")")"

release="$(echo "$directory" | cut -d _ -f 2)"

curl -L -X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
-H "Content-Type: application/octet-stream" \
-H "X-Github-Api-Version: 2022-11-28" \
"$url?name=${release}_${name}" \
--data-binary "@$artifact"
done
55 changes: 54 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,54 @@
## [Unreleased]

## [3.6.0] - 2023-10-26

### Added

- Allow configuration of individual samplers in the config file. This allows
each sampler to be individually enabled/disabled and have its collection
intervals adjusted.
- TCP connection state sampler which tracks the number of tcp connections in
each state.
- Rezolus sampler which monitors resource utilization of Rezolus itself.
- Optional exposition of histogram buckets on the Prometheus/OpenTelemetry
endpoint.
- Track latencies for each group of syscalls to help understand the breakdown of
total syscall latency.

### Fixed

- Corrected a length check of the mmap'd histogram regions. This fix enables the
fast path for reading histogram data into userspace.

## [3.5.0] - 2023-10-16

### Changed

- Updated `metriken` and replaced heatmaps with histograms. This reduces runtime
resource utilization.

## [3.4.0] - 2023-10-10

### Changed

- Moved to fetching multiple percentiles at once to reduce overhead.
- Refactor of the hardware info sampler into a separate crate to allow reuse and
make improvements to that sampler.

### Fixed

- Update `warp` to address RUSTSEC-2023-0065.

## [3.3.3] - 2023-08-08

### Added

- Packaging support for `aarch64`

### Fixed

- Updated dependencies to pull-in fixes and improvements.

## [3.3.2] - 2023-08-08

### Fixed
Expand Down Expand Up @@ -47,7 +96,11 @@
- Rewritten implementation of Rezolus using libbpf-rs and perf-event2 to provide
a more modern approach to BPF and Perf Event instrumentation.

[unreleased]: https://github.com/iopsystems/rezolus/compare/v3.3.2...HEAD
[unreleased]: https://github.com/iopsystems/rezolus/compare/v3.6.0...HEAD
[3.6.0]: https://github.com/iopsystems/rezolus/compare/v3.5.0...v3.6.0
[3.5.0]: https://github.com/iopsystems/rezolus/compare/v3.4.0...v3.5.0
[3.4.0]: https://github.com/iopsystems/rezolus/compare/v3.3.3...v3.4.0
[3.3.3]: https://github.com/iopsystems/rezolus/compare/v3.3.2...v3.3.3
[3.3.2]: https://github.com/iopsystems/rezolus/compare/v3.3.1...v3.3.2
[3.3.1]: https://github.com/iopsystems/rezolus/compare/v3.3.0...v3.3.1
[3.3.0]: https://github.com/iopsystems/rezolus/compare/v3.2.0...v3.3.0
Expand Down
Loading
Loading