1.0.0-alpha.169 • Published 10 months ago

@hyperledger/aries-bifold-remote-logs v1.0.0-alpha.169

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
10 months ago

TL;DR

The @hyperledger/aries-remote-logs package provides a simple way to send Aries Framework Javascript (AFJ) logs to a remote Loki server.

Usage

This package allows a copy of the AFJ logs to be sent to a remote Loki server. This is useful for debugging issues in environments where the logs are not easily accessible, yet the logs are needed to provide Tier 3 support.

Due to the sensitive nature of Verifiable Credentials and Digital Identity in general, the logs are not sent automatically. Instead, this feature must be enabled. It is highly recommended that this feature be disabled by default in production environments and only enabled, by the end user, when needed, and even then automatically disabled after a short period of time.

Considerations

When remote logging is enabled the RemoteLogger will generate a session ID automatically. This ID is then set as a label on all logs sent to the remote server. This allows the logs to be filtered by session ID. This is useful when debugging issues that are specific to a single user.

When the end user enables remote logging present them with the a session ID. This ID should be recorded and provided to the support team. The support team can then use this ID to identify the correct logs. This session ID is also helpful to minimize corelation of the logs with the end user.

Remote Warning Screenshot

Fetch the session ID with the following code:

// ...
const { agent } = useAgent()
const logger = agent?.config.logger as RemoteLogger

console.log(`Session ID: ${logger.sessionId}`)

Configuration

The RemoteLogger is configured with a set of options. These options are passed to the constructor of the RemoteLogger class. The options are as follows:

OptionTypeDescription
lokiUrlstringThe full URL of the Loki server.
lokiLabelsRecord<string, string>A set of labels to be applied to all logs sent to the Loki server.
autoDisableRemoteLoggingIntervalInMinutesnumberThe number of minutes to wait before automatically disabling remote logging.

The image below shows what a typical Grafana log query looks like. The query is filtered by the application and job labels. The sessionId label is used to filter the logs for a specific debug session.

Grafana Screenshot

Example Usage

Setup the RemoteLogger and pass it to the AFJ Agent as shown below:

import { RemoteLogger, RemoteLoggerOptions } from '@hyperledger/aries-remote-logs'

// ...

const autoDisableRemoteLoggingIntervalInMinutes = 90 // important
const lokiUrl = 'https://logs.example.com:3100/loki/api/v1/push'
const logOptions: RemoteLoggerOptions = {
  lokiUrl,
  lokiLabels: {
    application: 'bifold-wallet',
    job: 'react-native-logs',
  },
  autoDisableRemoteLoggingIntervalInMinutes,
}

const logger = new RemoteLogger(logOptions)
logger.startEventListeners()

const afjConfigOpts = {
  config: {
    label: 'Bifold Wallet',
    walletConfig: {
      id: 'some-wallet-id',
      key: 'some-secret-key',
    },
    logger,
    mediatorPickupStrategy: MediatorPickupStrategy.Implicit,
    autoUpdateStorageOnStartup: true,
    autoAcceptConnections: true,
  },
  dependencies: agentDependencies,
  modules: getAgentModules({
    indyNetworks: ledgers,
    mediatorInvitationUrl: Config.MEDIATOR_URL,
  }),
}

const agent = new Agent(options)

// ...

Enable and disable remote logging by sending events as shown below:

import { DeviceEventEmitter } from 'react-native'
import { RemoteLoggerEventTypes } from '@hyperledger/aries-remote-logs'

// ...

// enable remote logging, this will send the logs to the remote server
// and will automatically disable remote logging after the specified
// interval.
DeviceEventEmitter.emit(RemoteLoggerEventTypes.ENABLE_REMOTE_LOGGING, true)

// ...

Including the Package

Metro

Metro can't handle symlinks. Therefore, you need to specify the @hyperledger/aries-remote-logs location in the metro.config.js file of your application. Check out the example below, or view this complete example for more information.

// ...
fs.realpathSync(path.join(__dirname, 'node_modules', '@hyperledger/aries-remote-logs')),
// ...

Yarn

Yarn struggles to include react-native peer-dependencies from the local file system. To fix this, add any react-native dependencies from this package's peerDependencies in package.json to your own package.json. Use a command like yarn add react-native-logs@^5.0.1 to do this.

Development

This package ships with a docker-compose file that can be used to run a local Grafana Loki stack. To start the containers run the following command:

docker compose up -d

The Loki server will be available at http://localhost:3100. The Grafana server will be available at http://localhost:3000. The default username and password for Grafana is admin and the password is specified, can can be changed, in the docker-compose.yaml file:

environment:
  GF_SECURITY_ADMIN_PASSWORD: secret

Once the stack is running, and you have logged into Grafana, you may need to add a Loki data source from the main landing page. The only value you need set is the URL where Loki is running. The value, as per the docker stack is: http://loki:3100

1.0.0-alpha.461

12 months ago

1.0.0-alpha.460

12 months ago

1.0.0-alpha.465

11 months ago

1.0.0-alpha.464

11 months ago

1.0.0-alpha.463

12 months ago

1.0.0-alpha.462

12 months ago

1.0.0-alpha.469

11 months ago

1.0.0-alpha.468

11 months ago

1.0.0-alpha.467

11 months ago

1.0.0-alpha.466

11 months ago

1.0.0-alpha.472

11 months ago

1.0.0-alpha.471

11 months ago

1.0.0-alpha.470

11 months ago

1.0.0-alpha.476

11 months ago

1.0.0-alpha.475

11 months ago

1.0.0-alpha.473

11 months ago

1.0.0-alpha.359

1 year ago

1.0.0-alpha.479

11 months ago

1.0.0-alpha.478

11 months ago

1.0.0-alpha.477

11 months ago

1.0.0-alpha.449

12 months ago

1.0.0-alpha.448

12 months ago

1.0.0-alpha.443

1 year ago

1.0.0-alpha.442

1 year ago

1.0.0-alpha.441

1 year ago

1.0.0-alpha.447

1 year ago

1.0.0-alpha.446

1 year ago

1.0.0-alpha.445

1 year ago

1.0.0-alpha.444

1 year ago

1.0.0-alpha.459

12 months ago

1.0.0-alpha.450

12 months ago

1.0.0-alpha.454

12 months ago

1.0.0-alpha.453

12 months ago

1.0.0-alpha.452

12 months ago

1.0.0-alpha.451

12 months ago

1.0.0-alpha.458

12 months ago

1.0.0-alpha.457

12 months ago

1.0.0-alpha.456

12 months ago

1.0.0-alpha.455

12 months ago

1.0.0-alpha.380

1 year ago

1.0.0-alpha.384

1 year ago

1.0.0-alpha.383

1 year ago

1.0.0-alpha.382

1 year ago

1.0.0-alpha.381

1 year ago

1.0.0-alpha.388

1 year ago

1.0.0-alpha.387

1 year ago

1.0.0-alpha.386

1 year ago

1.0.0-alpha.385

1 year ago

1.0.0-alpha.389

1 year ago

1.0.0-alpha.391

1 year ago

1.0.0-alpha.390

1 year ago

1.0.0-alpha.395

1 year ago

1.0.0-alpha.394

1 year ago

1.0.0-alpha.393

1 year ago

1.0.0-alpha.392

1 year ago

1.0.0-alpha.399

1 year ago

1.0.0-alpha.398

1 year ago

1.0.0-alpha.397

1 year ago

1.0.0-alpha.396

1 year ago

1.0.0-alpha.483

11 months ago

1.0.0-alpha.362

1 year ago

1.0.0-alpha.482

11 months ago

1.0.0-alpha.361

1 year ago

1.0.0-alpha.481

11 months ago

1.0.0-alpha.360

1 year ago

1.0.0-alpha.480

11 months ago

1.0.0-alpha.487

11 months ago

1.0.0-alpha.366

1 year ago

1.0.0-alpha.486

11 months ago

1.0.0-alpha.365

1 year ago

1.0.0-alpha.485

11 months ago

1.0.0-alpha.364

1 year ago

1.0.0-alpha.484

11 months ago

1.0.0-alpha.363

1 year ago

1.0.0-alpha.369

1 year ago

1.0.0-alpha.489

11 months ago

1.0.0-alpha.368

1 year ago

1.0.0-alpha.488

11 months ago

1.0.0-alpha.367

1 year ago

1.0.0-alpha.490

11 months ago

1.0.0-alpha.494

11 months ago

1.0.0-alpha.373

1 year ago

1.0.0-alpha.493

11 months ago

1.0.0-alpha.492

11 months ago

1.0.0-alpha.371

1 year ago

1.0.0-alpha.491

11 months ago

1.0.0-alpha.370

1 year ago

1.0.0-alpha.498

10 months ago

1.0.0-alpha.377

1 year ago

1.0.0-alpha.497

11 months ago

1.0.0-alpha.376

1 year ago

1.0.0-alpha.496

11 months ago

1.0.0-alpha.375

1 year ago

1.0.0-alpha.495

11 months ago

1.0.0-alpha.374

1 year ago

1.0.0-alpha.379

1 year ago

1.0.0-alpha.378

1 year ago

1.0.0-alpha.501

10 months ago

1.0.0-alpha.500

10 months ago

1.0.0-alpha.429

1 year ago

1.0.0-alpha.428

1 year ago

1.0.0-alpha.427

1 year ago

1.0.0-alpha.426

1 year ago

1.0.0-alpha.421

1 year ago

1.0.0-alpha.420

1 year ago

1.0.0-alpha.425

1 year ago

1.0.0-alpha.424

1 year ago

1.0.0-alpha.423

1 year ago

1.0.0-alpha.422

1 year ago

1.0.0-alpha.439

1 year ago

1.0.0-alpha.438

1 year ago

1.0.0-alpha.432

1 year ago

1.0.0-alpha.431

1 year ago

1.0.0-alpha.430

1 year ago

1.0.0-alpha.436

1 year ago

1.0.0-alpha.435

1 year ago

1.0.0-alpha.434

1 year ago

1.0.0-alpha.433

1 year ago

1.0.0-alpha.409

1 year ago

1.0.0-alpha.408

1 year ago

1.0.0-alpha.400

1 year ago

1.0.0-alpha.418

1 year ago

1.0.0-alpha.417

1 year ago

1.0.0-alpha.416

1 year ago

1.0.0-alpha.415

1 year ago

1.0.0-alpha.419

1 year ago

1.0.0-alpha.414

1 year ago

1.0.0-alpha.413

1 year ago

1.0.0-alpha.412

1 year ago

1.0.0-alpha.411

1 year ago

1.0.0-alpha.358

1 year ago

1.0.0-alpha.355

1 year ago

1.0.0-alpha.354

1 year ago

1.0.0-alpha.353

1 year ago

1.0.0-alpha.357

1 year ago

1.0.0-alpha.356

1 year ago

1.0.0-alpha.351

1 year ago

1.0.0-alpha.350

1 year ago

1.0.0-alpha.352

1 year ago

1.0.0-alpha.349

1 year ago

1.0.0-alpha.348

1 year ago

1.0.0-alpha.347

1 year ago

1.0.0-alpha.346

1 year ago

1.0.0-alpha.344

1 year ago

1.0.0-alpha.343

1 year ago

1.0.0-alpha.345

1 year ago

1.0.0-alpha.340

1 year ago

1.0.0-alpha.342

1 year ago

1.0.0-alpha.341

1 year ago

1.0.0-alpha.329

1 year ago

1.0.0-alpha.339

1 year ago

1.0.0-alpha.338

1 year ago

1.0.0-alpha.333

1 year ago

1.0.0-alpha.332

1 year ago

1.0.0-alpha.331

1 year ago

1.0.0-alpha.330

1 year ago

1.0.0-alpha.337

1 year ago

1.0.0-alpha.336

1 year ago

1.0.0-alpha.335

1 year ago

1.0.0-alpha.334

1 year ago

1.0.0-alpha.328

1 year ago

1.0.0-alpha.327

1 year ago

1.0.0-alpha.322

1 year ago

1.0.0-alpha.321

1 year ago

1.0.0-alpha.320

1 year ago

1.0.0-alpha.326

1 year ago

1.0.0-alpha.325

1 year ago

1.0.0-alpha.324

1 year ago

1.0.0-alpha.323

1 year ago

1.0.0-alpha.319

1 year ago

1.0.0-alpha.318

1 year ago

1.0.0-alpha.317

1 year ago

1.0.0-alpha.316

1 year ago

1.0.0-alpha.311

1 year ago

1.0.0-alpha.315

1 year ago

1.0.0-alpha.314

1 year ago

1.0.0-alpha.313

1 year ago

1.0.0-alpha.312

1 year ago

1.0.0-alpha.234

2 years ago

1.0.0-alpha.237

2 years ago

1.0.0-alpha.236

2 years ago

1.0.0-alpha.235

2 years ago

1.0.0-alpha.281

2 years ago

1.0.0-alpha.280

2 years ago

1.0.0-alpha.285

2 years ago

1.0.0-alpha.284

2 years ago

1.0.0-alpha.283

2 years ago

1.0.0-alpha.282

2 years ago

0.1.0-alpha.247

2 years ago

1.0.0-alpha.292

2 years ago

1.0.0-alpha.291

2 years ago

1.0.0-alpha.290

2 years ago

1.0.0-alpha.296

2 years ago

1.0.0-alpha.295

2 years ago

1.0.0-alpha.294

2 years ago

1.0.0-alpha.293

2 years ago

1.0.0-alpha.299

2 years ago

1.0.0-alpha.298

2 years ago

1.0.0-alpha.297

2 years ago

1.0.0-alpha.308

1 year ago

1.0.0-alpha.307

1 year ago

1.0.0-alpha.305

1 year ago

1.0.0-alpha.309

1 year ago

1.0.0-alpha.263

2 years ago

1.0.0-alpha.262

2 years ago

1.0.0-alpha.261

2 years ago

1.0.0-alpha.267

2 years ago

1.0.0-alpha.266

2 years ago

1.0.0-alpha.265

2 years ago

1.0.0-alpha.264

2 years ago

1.0.0-alpha.304

1 year ago

1.0.0-alpha.303

1 year ago

1.0.0-alpha.302

2 years ago

1.0.0-alpha.269

2 years ago

1.0.0-alpha.301

2 years ago

1.0.0-alpha.268

2 years ago

1.0.0-alpha.270

2 years ago

1.0.0-alpha.274

2 years ago

1.0.0-alpha.273

2 years ago

1.0.0-alpha.272

2 years ago

1.0.0-alpha.271

2 years ago

1.0.0-alpha.278

2 years ago

1.0.0-alpha.310

1 year ago

1.0.0-alpha.277

2 years ago

1.0.0-alpha.276

2 years ago

1.0.0-alpha.275

2 years ago

1.0.0-alpha.279

2 years ago

1.0.0-alpha.245

2 years ago

1.0.0-alpha.244

2 years ago

1.0.0-alpha.249

2 years ago

1.0.0-alpha.248

2 years ago

1.0.0-alpha.252

2 years ago

1.0.0-alpha.251

2 years ago

1.0.0-alpha.250

2 years ago

1.0.0-alpha.256

2 years ago

1.0.0-alpha.255

2 years ago

1.0.0-alpha.254

2 years ago

1.0.0-alpha.253

2 years ago

1.0.0-alpha.259

2 years ago

1.0.0-alpha.258

2 years ago

1.0.0-alpha.257

2 years ago

1.0.0-alpha.233

2 years ago

1.0.0-alpha.232

2 years ago

1.0.0-alpha.231

2 years ago

1.0.0-alpha.230

2 years ago

1.0.0-alpha.229

2 years ago

1.0.0-alpha.228

2 years ago

1.0.0-alpha.227

2 years ago

1.0.0-alpha.222

2 years ago

1.0.0-alpha.221

2 years ago

1.0.0-alpha.220

2 years ago

1.0.0-alpha.219

2 years ago

1.0.0-alpha.218

2 years ago

1.0.0-alpha.217

2 years ago

1.0.0-alpha.216

2 years ago

1.0.0-alpha.215

2 years ago

1.0.0-alpha.214

2 years ago

1.0.0-alpha.213

2 years ago

1.0.0-alpha.212

2 years ago

1.0.0-alpha.211

2 years ago

1.0.0-alpha.209

2 years ago

1.0.0-alpha.208

2 years ago

1.0.0-alpha.207

2 years ago

1.0.0-alpha.206

2 years ago

1.0.0-alpha.205

2 years ago

1.0.0-alpha.204

2 years ago

1.0.0-alpha.203

2 years ago

1.0.0-alpha.202

2 years ago

1.0.0-alpha.201

2 years ago

1.0.0-alpha.200

2 years ago

1.0.0-alpha.199

2 years ago

1.0.0-alpha.198

2 years ago

1.0.0-alpha.197

2 years ago

1.0.0-alpha.196

2 years ago

1.0.0-alpha.195

2 years ago

1.0.0-alpha.193

2 years ago

1.0.0-alpha.194

2 years ago

1.0.0-alpha.191

2 years ago

1.0.0-alpha.190

2 years ago

1.0.0-alpha.189

2 years ago

1.0.0-alpha.188

2 years ago

1.0.0-alpha.186

2 years ago

1.0.0-alpha.185

2 years ago

1.0.0-alpha.182

2 years ago

1.0.0-alpha.184

2 years ago

1.0.0-alpha.183

2 years ago

1.0.0-alpha.181

2 years ago

1.0.0-alpha.180

2 years ago

1.0.0-alpha.179

2 years ago

1.0.0-alpha.178

2 years ago

1.0.0-alpha.177

2 years ago

1.0.0-alpha.176

2 years ago

1.0.0-alpha.175

2 years ago

1.0.0-alpha.174

2 years ago

1.0.0-alpha.173

2 years ago

1.0.0-alpha.172

2 years ago

1.0.0-alpha.171

2 years ago

1.0.0-alpha.170

2 years ago

1.0.0-alpha.169

2 years ago